/**
 * 选择排序：
 * 在要排序的一组数中，选出最小（或者最大）的一个数与第1个位置的数交换；
 * 然后在剩下的数当中再找最小（或者最大）的与第2个位置的数交换，
 * 依次类推，直到第n-1个元素（倒数第二个数）和第n个元素（最后一个数）比较为止。
 */
package com.nanjing.sort;


/**
 * <p>Title: SelectSort.java</p>
 * <p>Description: </p>
 * @author eeexiu
 * @date 2016年7月2日
 */
public class SelectSort {

	/**
	 * 数组的最小值
	 */
	public static int selectMinkey(int a[],int n,int i){
		int k = i;
		for(int j=i+1;j<n;++j){
			if(a[k]>a[j]){
				k = j;
			}
		}
		return k;
	}
	
	/**
	 * 选择排序
	 */
	public static void selectSort(int a[],int n){
		
		int key,temp;
		for(int i=0;i<n;++i){
			key = selectMinkey(a, n, i);//选择最下的元素
			if(key!= i){
				temp = a[i];
				a[i] = a[key];
				a[key] = temp;//最小元素与第i位置元素互换
			}
			System.out.println(a+","+n+","+i);
		}
	}
	public static void main(String[] args) {
		int a[] = {3,4,1,7,6,5,9,16};
		System.out.println("原数组初始值：");
		for(int i=0;i<7;++i){
			System.out.print(a[i]);
		}
		System.out.println("排序后的数组：");
		selectSort(a,8);
		for(int i=0;i<7;++i){
			System.out.print(a[i]);
		}
	}
}
